package com.yourname.www.frame;

import com.yourname.www.listen.LoginButtonActionListener;
import com.yourname.www.listen.PasswordTextListener;
import com.yourname.www.listen.UsernameTextListener;
import com.yourname.www.util.WindowUtil;

import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.tree.DefaultTreeCellEditor;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;

public class LoginFrame extends JFrame {
    private JFrame jf;
    //设置两个输入框
    private JTextField usernameText;        //用户名输入框
    private JPasswordField passwordText;	//密码文本域。
    //属性、方法名使用小驼峰

    //设置两个标签
    private JLabel usernameLabel;	//用户名标签。
    private JLabel passwordLabel;	//密码标签。

    //设置两个按钮
    private JButton loginButton;	//登陆按钮。
    private JButton registerButton;	//注册按钮。
    //布局容器
    private Container c;
    public LoginFrame(){
        //设置基本信息
        setBasicInfo();
        this.setLayout(null);//设置为空布局。设置为空布局。设置为空布局。设置为空布局。
        //获取布局容器
         c = this.getContentPane();
        //设置背景颜色。
        //1.使用系统内置的颜色
        c.setBackground(Color.RED);
        //2 自定义颜色 RGB  0-255
        c.setBackground(new Color(219, 14, 79));
        //布局用户名标签和输入框
        this.setUsernameText();
        //布局密码标签和输入框
        this.setPasswordText();
        //布局登录按钮
        this.setLoginButton();
        //布局注册按钮
        this.setRegisterButton();
        //绑定输入框的键盘事件
        //1、匿名内部类
        //2、自定义类
        usernameText.addKeyListener(new UsernameTextListener(usernameText));
        passwordText.addKeyListener(new PasswordTextListener(usernameText,passwordText,jf));
        //监听鼠标事件
        loginButton.addActionListener(new LoginButtonActionListener(usernameText,passwordText,jf));

        registerButton.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                //关闭当前窗口
                jf.dispose();
                //打开新的窗口
                RegisterFrame registerFrame = new RegisterFrame();
            }
        });


        //JOptionPane.showMessageDialog(jf, "用户名不能为空","",JOptionPane.WARNING_MESSAGE);

        //最后设置可见、最后设置可见、最后设置可见
        this.setVisible(false);
        this.setVisible(true);
    }

    private void setRegisterButton() {
        //------------------6 注册按钮
        registerButton = new JButton();
        registerButton.setText("注册");
        registerButton.setBorder(null);
        registerButton.setBackground(new Color(253, 100, 1));
        //2.设置组件的位置 水平距离 垂直距离 宽度 高度【必须的】
        registerButton.setBounds(240,240,80,30);
        //3.设置组件字体的样式 字体名称 字体样式 字体大小 【可选】
        registerButton.setFont(new Font("微软雅黑",Font.ITALIC,20));
        //4.设置前景色【字体颜色】【可选】
        registerButton.setForeground(Color.white);
        //5.把组件添加到布局容器中
        c.add(registerButton);
    }

    private void setLoginButton() {
        //------------------5 登录按钮
        loginButton = new JButton();
        loginButton.setText("登录");
        loginButton.setBorder(null);
        loginButton.setBackground(new Color(253, 100, 1));
        //2.设置组件的位置 水平距离 垂直距离 宽度 高度【必须的】
        loginButton.setBounds(140,240,80,30);
        //3.设置组件字体的样式 字体名称 字体样式 字体大小 【可选】
        loginButton.setFont(new Font("微软雅黑",Font.ITALIC,20));
        //4.设置前景色【字体颜色】【可选】
        loginButton.setForeground(Color.white);
        //5.把组件添加到布局容器中
        c.add(loginButton);
    }

    private void setPasswordText() {
        //--------------------4密码标签----------------------------
        //1.实例化相应的组件【必须的】
        passwordLabel = new JLabel();
        //1.2设置文本
        passwordLabel.setText("密 码：");
        //2.设置组件的位置 水平距离 垂直距离 宽度 高度【必须的】
        passwordLabel.setBounds(100,130,80,30);
        //3.设置组件字体的样式 字体名称 字体样式 字体大小 【可选】
        passwordLabel.setFont(new Font("微软雅黑",Font.ITALIC,20));
        //4.设置前景色【字体颜色】【可选】
        passwordLabel.setForeground(Color.white);
        //5.把组件添加到布局容器中
        c.add(passwordLabel);
        //--------------------3密码输入框---------------------
        //1.实例化相应的组件【必须的】
        passwordText = new JPasswordField();
        //2.设置组件的位置 水平距离 垂直距离 宽度 高度【必须的】
        passwordText.setBounds(200,130,200,30);
        //3.设置组件字体的样式 字体名称 字体样式 字体大小 【可选】
        passwordText.setFont(new Font("微软雅黑",Font.ITALIC,20));
        //4.设置前景色【字体颜色】【可选】
        passwordText.setForeground(Color.red);
        //5.把组件添加到布局容器中
        c.add(passwordText);

    }

    //设置基本信息
    private void setBasicInfo() {
        this.jf = this;
        this.setTitle("泉州职业技术大学-学生成绩管理系统~~");
        //设置Logo
        try{
            Image image = ImageIO.read(this.getClass().getResource("/logo.png"));
            this.setIconImage(image);
        }catch (IOException e) {
            e.printStackTrace();
        }

        //设置大小
        this.setSize(500,400);
        //设置是否可以调节大小
        this.setResizable(false);
        //设置关闭行为【其实默认就是，可以不设置，了解方法即可】
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //设置居中
        WindowUtil.setFrameCenter(this);
    }
    /*
    设置用户名标签和输入框
    * */
    private void setUsernameText(){
        //--------------------2用户名标签---------------------
        //1.实例化相应的组件【必须的】
        usernameLabel = new JLabel();
        //1.2设置文本
        usernameLabel.setText("用户名：");
        //2.设置组件的位置 水平距离 垂直距离 宽度 高度【必须的】
        usernameLabel.setBounds(100,60,80,30);
        //3.设置组件字体的样式 字体名称 字体样式 字体大小 【可选】
        usernameLabel.setFont(new Font("微软雅黑",Font.ITALIC,20));
        //4.设置前景色【字体颜色】【可选】
        usernameLabel.setForeground(Color.white);
        //5.把组件添加到布局容器中
        c.add(usernameLabel);

        //对组件进行实例化
        //--------------------1用户名输入框---------------------
        //1.实例化相应的组件【必须的】
        usernameText = new JTextField();
        //2.设置组件的位置 水平距离 垂直距离 宽度 高度【必须的】
        usernameText.setBounds(200,60,200,30);
        //3.设置组件字体的样式 字体名称 字体样式 字体大小 【可选】
        usernameText.setFont(new Font("微软雅黑",Font.ITALIC,20));
        //4.设置前景色【字体颜色】【可选】
        usernameText.setForeground(Color.red);
        //5.把组件添加到布局容器中
        c.add(usernameText);


    }
}
